package org.fhawk.tinyspring.core;

import org.fhawk.tinyspring.InstantFactory;

import java.lang.annotation.Annotation;
import java.util.List;

/**
 * Created by tuo on 8/17/2016.
 */
public class ClassHelper {

    private ClassHelper() {
    }

    /**
     * 基础包名
     */
    private static final String BASE_PACKAGE = ConfigHelper.getString("org.fhawk.basePackage");
    /**
     * 获取类扫描器
     */
    private static final ClassScanner scanner = InstantFactory.getClassScanner();

    /**
     * 获取基础包下所有类
     *
     * @return 指定包下所有类
     */
    public static List<Class<?>> getBasePackageClassList() {
        return scanner.getAllClass(BASE_PACKAGE);
    }


    /**
     * 获取基础包下指定类的所有子类
     *
     * @param supperClass 父类
     * @return 指定父类下所有类
     */
    public static List<Class<?>> getBasePackageClassListBySuperClass(Class<?> supperClass) {
        return scanner.getClassBySuperClass(BASE_PACKAGE, supperClass);
    }


    /**
     * 胡群殴基础包下指定注解的类
     *
     * @param annotationClass 注解
     * @return 指定注解下所有类
     */
    public static List<Class<?>> getBasePackageClassListByAnnotation(Class<? extends Annotation> annotationClass) {
        return scanner.getClassByAnnotation(BASE_PACKAGE, annotationClass);
    }


}
